% main.tex - 主文档
\documentclass[12pt,a4paper,UTF8]{ctexart}

% 加载自定义包
\usepackage{styles/mypackages}

% 文档信息
\title{国产开源数据库调研与测试比对报告}
\author{调研分析：cmx-cxd}
\date{\today}

\begin{document}

% 前言部分
\input{frontmatter/titlepage}

% 目录
\clearpage
\tableofcontents  % 生成目录
\listoffigures    % 插图目录
\listoftables     % 表格目录
\clearpage

% 正文章节
\input{chapters/01-introduction}
\clearpage
\input{chapters/02-db_overview}
\clearpage
\input{chapters/03-test_design}
\clearpage
\input{chapters/04-test_steps}
\clearpage
\input{chapters/05-test_records}
\clearpage
\input{chapters/06-result_analysis}
\clearpage
\input{chapters/07-conclusion}

% 附录
\clearpage
\appendix

% 新增：性能测试原始数据
\section{性能测试原始数据}
\label{app:performance_data}

本附录包含所有数据库性能测试的详细原始数据记录，数据来源于实际测试执行结果。

\subsection{完整测试数据记录}

\begin{center}
\footnotesize
\begin{longtable}{lp{2.5cm}cp{1.5cm}p{2cm}c}
    \caption{数据库测试原始数据完整记录} \\
    \label{tab:performance_complete_data} \\
    \toprule
    数据库 & 测试项目 & 测试结果 & 单位 & 备注 & 测试时间 \\
    \midrule
    \endfirsthead
    
    \caption[]{数据库测试原始数据完整记录（续）} \\
    \toprule
    数据库 & 测试项目 & 测试结果 & 单位 & 备注 & 测试时间 \\
    \midrule
    \endhead
    
    \bottomrule
    \multicolumn{6}{r}{续下页} \\
    \endfoot
    
    \bottomrule
    \endlastfoot
    
    \textbf{openGauss} & 基础连接验证 & 成功 & - & - & 20251024\_092954 \\
    openGauss & 库表创建 & 成功 & - & - & 20251024\_092954 \\
    openGauss & 1000条数据插入时间 & 0.041 & 秒 & 批量插入 & 20251024\_092954 \\
    openGauss & OLTP-TPS & 24390.2 & 事务/秒 & 1000条数据 & 20251024\_092954 \\
    openGauss & 计数查询耗时 & 0.024 & 秒 & COUNT(*) & 20251024\_092954 \\
    openGauss & 条件查询耗时 & 0.026 & 秒 & WHERE & 20251024\_092954 \\
    openGauss & JOIN查询耗时 & 0.034 & 秒 & LEFT JOIN 查询 & 20251024\_092954 \\
    openGauss & 聚合查询耗时 & 0.028 & 秒 & - & 20251024\_092954 \\
    openGauss & 更新性能耗时 & 0.030 & 秒 & 100条记录 & 20251024\_092954 \\
    openGauss & 复杂分析查询耗时 & 0.030 & 秒 & 窗口查询 & 20251024\_092954 \\
    openGauss & 并发查询耗时 & 0.037 & 秒 & 5个并发查询 & 20251024\_092954 \\
    openGauss & CPU使用率 & 1.72 & \% & docker stats & 20251024\_092954 \\
    openGauss & 内存占用 & 616.4 & MB & docker stats & 20251024\_092954 \\
    openGauss & 部署耗时 & 5 & 分钟 & Docker方式 & 20251024\_092954 \\
    openGauss & 部署综合评分 & 2 & 分 & 1-5分制 & 20251024\_092954 \\
    
    \midrule
    \textbf{MatrixOne} & 基础连接验证 & 成功 & - & - & 20251024\_095518 \\
    MatrixOne & 库表创建 & 成功 & - & - & 20251024\_095518 \\
    MatrixOne & 1000条数据插入时间 & 0.108 & 秒 & 批量插入 & 20251024\_095518 \\
    MatrixOne & OLTP-TPS & 9259.3 & 事务/秒 & 1000条数据 & 20251024\_095518 \\
    MatrixOne & 计数查询耗时 & 0.034 & 秒 & COUNT(*) & 20251024\_095518 \\
    MatrixOne & 条件查询耗时 & 0.034 & 秒 & WHERE & 20251024\_095518 \\
    MatrixOne & JOIN查询耗时 & 0.047 & 秒 & LEFT JOIN 查询 & 20251024\_095518 \\
    MatrixOne & 聚合查询耗时 & 0.033 & 秒 & - & 20251024\_095518 \\
    MatrixOne & 复杂分析查询耗时 & 0.034 & 秒 & 分组聚合 & 20251024\_095518 \\
    MatrixOne & 更新性能耗时 & 0.039 & 秒 & 100条记录 & 20251024\_095518 \\
    MatrixOne & 并发查询耗时 & 0.049 & 秒 & 5个并发查询 & 20251024\_095518 \\
    MatrixOne & CPU使用率 & 47.00 & \% & docker stats & 20251024\_095518 \\
    MatrixOne & 内存占用 & 942 & MB & docker stats & 20251024\_095518 \\
    MatrixOne & 部署耗时 & 5 & 分钟 & Docker方式 & 20251024\_095518 \\
    MatrixOne & 部署综合评分 & 2 & 分 & 1-5分制 & 20251024\_095518 \\
    
    \midrule
    \textbf{TDengine} & 基础连接验证 & 成功 & - & - & 20251024\_095411 \\
    TDengine & 库表创建 & 成功 & - & 创建 test 库与 devices 超级表 & 20251024\_095411 \\
    TDengine & 1000条数据插入时间 & 3.968 & 秒 & 批量插入 & 20251024\_095411 \\
    TDengine & OLTP-TPS & 252.0 & 事务/秒 & 1000条数据 & 20251024\_095411 \\
    TDengine & 计数查询耗时 & 0.391 & 秒 & COUNT(*) & 20251024\_095411 \\
    TDengine & 条件查询耗时 & 0.353 & 秒 & WHERE & 20251024\_095411 \\
    TDengine & 聚合查询耗时 & 0.398 & 秒 & - & 20251024\_095411 \\
    TDengine & 时间范围查询耗时 & 0.388 & 秒 & 查询近1小时数据 & 20251024\_095411 \\
    TDengine & 标签更新耗时 & 0.374 & 秒 & - & 20251024\_095411 \\
    TDengine & 复杂分析查询耗时 & 0.389 & 秒 & 分组聚合 & 20251024\_095411 \\
    TDengine & 并发查询耗时 & 0.388 & 秒 & 5个并发查询 & 20251024\_095411 \\
    TDengine & CPU使用率 & 15.91 & \% & docker stats & 20251024\_095411 \\
    TDengine & 内存占用 & 184 & MB & docker stats & 20251024\_095411 \\
    TDengine & 部署耗时 & 5 & 分钟 & Docker方式 & 20251024\_095411 \\
    TDengine & 部署综合评分 & 2 & 分 & 1-5分制 & 20251024\_095411 \\
    
    \midrule
    \textbf{OceanBase} & 基础连接验证 & 成功 & - & - & 20251024\_113649 \\
    OceanBase & 库表创建 & 成功 & - & - & 20251024\_113649 \\
    OceanBase & 1000条数据插入时间 & 0.350 & 秒 & 批量插入 & 20251024\_113649 \\
    OceanBase & OLTP-TPS & 2857.1 & 事务/秒 & 1000条数据 & 20251024\_113649 \\
    OceanBase & 计数查询耗时 & 0.048 & 秒 & COUNT(*) & 20251024\_113649 \\
    OceanBase & 条件查询耗时 & 0.025 & 秒 & WHERE & 20251024\_113649 \\
    OceanBase & JOIN查询耗时 & 0.098 & 秒 & LEFT JOIN 查询 & 20251024\_113649 \\
    OceanBase & 聚合查询耗时 & 0.027 & 秒 & - & 20251024\_113649 \\
    OceanBase & 复杂分析查询耗时 & 0.028 & 秒 & 分组聚合 & 20251024\_113649 \\
    OceanBase & 更新性能耗时 & 0.029 & 秒 & 100条记录 & 20251024\_113649 \\
    OceanBase & 并发查询耗时 & 0.048 & 秒 & 5个并发查询 & 20251024\_113649 \\
    OceanBase & CPU使用率 & 92.92 & \% & docker stats & 20251024\_113649 \\
    OceanBase & 内存占用 & 3918.4 & MB & docker stats & 20251024\_113649 \\
    OceanBase & 部署耗时 & 5 & 分钟 & Docker方式 & 20251024\_113649 \\
    OceanBase & 部署综合评分 & 2 & 分 & 1-5分制 & 20251024\_113649 \\
    
    \midrule
    \textbf{Milvus} & 基础连接验证 & 成功 & - & - & 20251024\_060247 \\
    Milvus & 集合创建 & 0.533 & 秒 & 创建集合 & 20251024\_060247 \\
    Milvus & 5000条数据插入时间 & 3.380 & 秒 & 批量插入 & 20251024\_060247 \\
    Milvus & 数据插入速率 & 1479.32 & 向量/秒 & 5000条数据 & 20251024\_060247 \\
    Milvus & 精确搜索测试 & 2.540 & 秒 & 5个查询向量 & 20251024\_060247 \\
    Milvus & 过滤搜索测试 & 0.009 & 秒 & 条件过滤 & 20251024\_060247 \\
    Milvus & 复杂搜索测试 & 0.010 & 秒 & 多条件过滤 & 20251024\_060247 \\
    Milvus & 聚合查询测试 & 0.034 & 秒 & 分类统计 & 20251024\_060247 \\
    Milvus & 并发查询测试 & 0.020 & 秒 & 10并发查询 & 20251024\_060247 \\
    Milvus & 并发查询吞吐量 & 501.70 & 查询/秒 & 10并发查询 & 20251024\_060247 \\
    Milvus & 更新操作测试 & 3.051 & 秒 & 更新10条 & 20251024\_060247 \\
    Milvus & CPU使用率 & 待补充 & \% & docker stats & 20251024\_060247 \\
    Milvus & 内存占用 & 待补充 & MB & docker stats & 20251024\_060247 \\
    Milvus & 部署耗时 & 5 & 分钟 & Docker方式 & 20251024\_060247 \\
    Milvus & 部署综合评分 & 2 & 分 & 1-5分制 & 20251024\_060247 \\
\end{longtable}
\end{center}

\subsection{数据说明}

\textbf{测试环境配置}：
\begin{itemize}
    \item \textbf{硬件环境}：Intel Xeon Silver 4210R (20核40线程) + 62GB DDR4 + 7.3TB HDD
    \item \textbf{软件环境}：CentOS Linux 7.9 + Docker 27.4.1
    \item \textbf{部署方式}：Docker容器化一键部署
    \item \textbf{测试方法}：标准化测试脚本，确保结果可比性
\end{itemize}

\textbf{性能指标说明}：
\begin{itemize}
    \item \textbf{TPS (Transactions Per Second)}：每秒事务数，衡量数据库事务处理能力
    \item \textbf{查询延迟}：各类查询操作的平均响应时间
    \item \textbf{资源占用}：测试期间的平均CPU使用率和内存消耗
    \item \textbf{部署评分}：基于步骤数、自动化程度、依赖复杂度的综合评分（1分=极简单，5分=极复杂）
\end{itemize}

\textbf{数据完整性说明}：
\begin{itemize}
    \item 所有测试数据均来自实际执行结果，记录在对应的日志文件中
    \item 测试时间戳格式为YYYYMMDD\_HHMMSS，便于追溯和验证
    \item Milvus的部分资源使用数据待补充，因其测试重点在于向量检索性能
\end{itemize}

\clearpage

\section{部署脚本与配置文件简要说明}

\subsection{Docker Compose部署配置}
本项目数据库均通过Docker Compose进行容器化部署。

\subsubsection{主要配置文件}
\begin{itemize}
    \item \texttt{docker-compose.yml} - 所有数据库服务的Docker Compose配置
\end{itemize}

\subsubsection{使用说明}
\begin{verbatim}
# 启动所有服务
cd appendices/docker-compose
docker-compose up -d

# 停止所有服务
docker-compose down

# 查看服务状态
docker-compose ps
\end{verbatim}

\subsection{自动化脚本}
项目提供了一系列自动化脚本，位于\texttt{appendices/scripts/}目录，简化部署和测试流程。

\subsubsection{脚本列表}
\begin{itemize}
    \item \texttt{deploy\_all.sh} - 一键部署所有数据库服务
    \item \texttt{health\_check.sh} - 数据库健康检查脚本
    \item \texttt{run\_performance\_tests.sh} - 自动化性能测试脚本
    \item \texttt{stop\_all.sh} - 停止所有数据库服务
    \item \texttt{backup\_data.sh} - 数据备份脚本
\end{itemize}

\subsubsection{使用示例}
\begin{verbatim}
# 一键部署
./appendices/scripts/deploy_all.sh

# 健康检查
./appendices/scripts/health_check.sh

# 性能测试
./appendices/scripts/run_performance_tests.sh
\end{verbatim}

\clearpage
\section{部署脚本与配置文件详情}

\subsection{Docker Compose 部署配置}
\label{app:docker-compose}

以下为所有数据库服务的 Docker Compose 配置文件：

\subsubsection{主配置文件 (docker-compose.yml)}
\lstinputlisting[language=yaml, caption={Docker Compose 主配置文件}, label=lst:docker-compose]{appendices/docker-compose/docker-compose.yml}

\subsection{自动化部署脚本}
\label{app:scripts}

\subsubsection{一键部署脚本}
\lstinputlisting[language=bash, caption={一键部署脚本}, label=lst:deploy-script]{appendices/scripts/deploy_all.sh}

\subsubsection{健康检查脚本}
\lstinputlisting[language=bash, caption={健康检查脚本}, label=lst:health-check]{appendices/scripts/health_check.sh}

\subsubsection{性能测试脚本}
\lstinputlisting[language=bash, caption={性能测试脚本}, label=lst:performance-test]{appendices/scripts/run_performance_tests.sh}

\subsubsection{服务管理脚本}
\lstinputlisting[language=bash, caption={服务停止脚本}, label=lst:stop-script]{appendices/scripts/stop_all.sh}

\lstinputlisting[language=bash, caption={数据备份脚本}, label=lst:backup-script]{appendices/scripts/backup_data.sh}

\subsection{数据库配置文件示例}
\label{app:configs}

\subsubsection{openGauss 配置文件}
由于 openGauss 容器使用默认配置，如需自定义可创建以下配置文件：
\lstinputlisting[language=properties, caption={openGauss 配置示例}, label=lst:opengauss-config]{appendices/config_files/opengauss/postgresql.conf}

\subsubsection{TDengine 配置文件}
\lstinputlisting[language=properties, caption={TDengine 配置示例}, label=lst:tdengine-config]{appendices/config_files/tdengine/taos.cfg}

\subsection{使用说明}
\label{app:usage}

\subsubsection{快速开始}
\begin{enumerate}
    \item 确保服务器已安装 Docker 和 Docker Compose
    \item 克隆项目到服务器
    \item 执行部署脚本：\texttt{./appendices/scripts/deploy\_all.sh}
    \item 运行健康检查：\texttt{./appendices/scripts/health\_check.sh}
    \item 开始性能测试：\texttt{./appendices/scripts/run\_performance\_tests.sh}
\end{enumerate}

\subsubsection{端口访问信息}
\begin{table}[H]
    \centering
    \caption{数据库服务访问信息}
    \label{tab:service-ports}
    \begin{tabular}{llll}
        \toprule
        数据库 & 端口 & 默认用户 & 默认密码 \\
        \midrule
        openGauss & 5432 & gaussdb & OpenGauss@123 \\
        OceanBase & 2881 & root@sys & OceanBase@123 \\
        TDengine & 6030 & root & taosdata \\
        MatrixOne & 6001 & root & 111 \\
        Milvus & 19530 & - & - \\
        \bottomrule
    \end{tabular}
\end{table}

\subsubsection{数据持久化}
所有数据库数据存储在 \texttt{/home/data/database/} 目录下，结构如下：
\begin{verbatim}
/home/data/database/
├── opengauss/     # openGauss 数据文件
├── oceanbase/     # OceanBase 数据文件  
├── tdengine/      # TDengine 数据文件
├── matrixone/     # MatrixOne 数据文件
└── milvus/        # Milvus 数据文件
\end{verbatim}

\end{document}